<?php
if (!defined("APP_PATH")) {
    define('APP_PATH',__DIR__.'/../application/');
    // 加载框架引导文件
    require  __DIR__.'/../thinkphp/start.php';
}

use think\Db;
use think\Exception;
use think\Log;
use fast\Http;

echo "<pre>";
set_time_limit(0);
//每周一结算 分享奖励

if(config("site.share_switch")) {
    get_share_result();
} else {
    echo '分享奖励开关：'.date('Y-m-d H:i:s')."\r\n";exit;
}
function get_share_result()
{
    $debug = config("app_debug");
    if (php_sapi_name() != 'cli' && !$debug) {
        // echo '只能在cli模式下或者开启调试模式运行：' . date('Y-m-d H:i:s') . "\r\n";die;
    }
    echo '开始执行的时间：'.date('Y-m-d H:i:s')."\r\n";
    $redis = rds();
    $bkey = REDIS_PREFIX.'get_share_result';
    if($debug) {
        delkey($redis,$bkey);
    }
    $op = $redis->set($bkey,1,['NX','EX'=>(7*60*60*24)-600]);
    if(!$op){
        echo '请勿频繁操作：'.date('Y-m-d H:i:s')."\r\n";
        goto END2;
    }

    //\db()->execute("SET global sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))");//本地防止报错
    $kc_share = \db('config')->where('name','kc_share')->value('value');

    if (!$kc_share) {
        echo "\r\n".'分享矿池为0：'.date('Y-m-d H:i:s')."\r\n";
        goto END1;
    }

    //查询一周注册的人并且已经投资的人  (2021-05-14 新增)
    $time_start = strtotime(date('Y-m-d',strtotime('-1 week')));
    $time_end = strtotime(date('Y-m-d'));
    $users = \db('user')
        ->alias('u')
        ->field('ud.tjid,count(u.id) as count_tjid')
        ->join('user_detail ud', 'u.id = ud.uid')
        ->where('u.createtime','between',[$time_start, $time_end])
        ->where(['u.credit1'=>['>',0]])
        ->having('count_tjid >= 10')
        ->group('ud.tjid')
        ->order('count_tjid desc')
        ->select();
    /*//查询排行榜 直推10个已投资的人（未出局）数量相同根据先投资先排
    $users = \db('user')->alias('u')
        ->field('ud2.uid')
        ->join('user_detail ud', 'u.id = ud.uid')
        ->join('tron_order o', 'o.uid = u.id')
        ->join('user_detail ud2', 'ud.tjid = ud2.uid')
        ->where(['ud2.tjnum_v'=>['>=',10]])
        ->where(['u.credit1'=>['>',0]])
        ->group('ud2.uid')
        ->order('ud2.tjnum_v desc,o.createtime asc')
        ->limit(10)
        ->select();*/

    //奖励参数
    $share_array = \db('config')->where('name','share_list')->value('value');
    $share_array = json_decode($share_array, true);

    //更新到redis方便使用lua单次执行
    if (empty($users)) {
        echo "\r\n".'暂无数据：'.date('Y-m-d H:i:s')."\r\n";
        goto END1;
    }
    writelog('执行时间'.date('Y-m-d H:i:s')."===开始时间戳：".$time_start."===结束时间戳：".$time_end.'===分享矿池：'.$kc_share."\r\n");
    try {
        db::startTrans();
        foreach ($users as $key => $value) {
            $percent = $key+1 > 4 ? intval($share_array[4]) : intval($share_array[$key+1]);
            $total = bcmul($kc_share, $percent/100, 6);
            writelog('用户'.$value['tjid'].'======'.$total."\r\n");
            \db('user')->where('id', $value['tjid'])->setInc('credit2',$total);
        }
        db::commit();
    } catch (\Exception $e) {
        echo "\r\n".'更新用户收益失败:'.$e->getMessage().date('Y-m-d H:i:s')."\r\n";
        db::rollback();
        goto END2;
    }

    \db('config')->where('name','kc_share')->update(['value' => 0]);
    END1:
    //重置数据
    \db('user_detail')->where('1=1')->update(['tjnum_v' => 0]);
    delkey($redis,REDIS_PREFIX.'user_share_award');
    delkey($redis,$bkey);
    END2:
    echo "\r\n".'结束执行的时间：'.date('Y-m-d H:i:s')."\r\n";

}
function writelog($loginfo){
    $file = ROOT_PATH.'timertask/log/'.date('y-m-d').'_share.log';
    if(!is_file($file)){
        file_put_contents($file,'',FILE_APPEND);//如果文件不存在，则创建一个新文件。
    }
    $contents=$loginfo."\r\n";
    file_put_contents($file, $contents,FILE_APPEND);
}


